<html>
<head><meta charset="utf-8"><title>design meeting 2019-09-13 · t-compiler · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/index.html">t-compiler</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html">design meeting 2019-09-13</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="175625746"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175625746" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175625746">(Sep 13 2019 at 13:56)</a>:</h4>
<p>Hey <span class="user-group-mention" data-user-group-id="897">@T-compiler/meeting</span> -- design meeting starting in <strong>5 minutes</strong>.  The topic will be <a href="https://hackmd.io/_ixQrAr5TKafV9m8eSU_VA?view" target="_blank" title="https://hackmd.io/_ixQrAr5TKafV9m8eSU_VA?view">"rust-analyzer and library-ification"</a>. You can view the <a href="https://hackmd.io/_ixQrAr5TKafV9m8eSU_VA?view" target="_blank" title="https://hackmd.io/_ixQrAr5TKafV9m8eSU_VA?view">hackmd document</a> here that collects some thoughts.</p>
<p>To start, let's have</p>
<h1>Announcements</h1>



<a name="175626002"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175626002" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175626002">(Sep 13 2019 at 13:59)</a>:</h4>
<p>cc <span class="user-mention" data-user-id="133169">@matklad</span> and <span class="user-mention" data-user-id="129457">@Florian Diebold</span>, not sure if you are part of t-compiler/meeting (let me know if you want to be added...)</p>



<a name="175626568"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175626568" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175626568">(Sep 13 2019 at 14:04)</a>:</h4>
<p><span aria-label="wave" class="emoji emoji-1f44b" role="img" title="wave">:wave:</span></p>



<a name="175626570"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175626570" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175626570">(Sep 13 2019 at 14:04)</a>:</h4>
<p>OK, let's see, maybe we can make a kind of "agenda-ish" to guide our time</p>



<a name="175626616"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175626616" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175626616">(Sep 13 2019 at 14:04)</a>:</h4>
<p>(Also, I realized that I should probably -- after each planning meeting -- be sending an e-mail to the compiler mailing list with upcoming dates. Going to start doing that after this meeting.)</p>



<a name="175626684"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175626684" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175626684">(Sep 13 2019 at 14:05)</a>:</h4>
<p>(I don't think I'm on that list... but interested)</p>



<a name="175626713"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175626713" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175626713">(Sep 13 2019 at 14:05)</a>:</h4>
<p>actually the right place to post these sorts of updates is the team blog</p>



<a name="175626718"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175626718" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175626718">(Sep 13 2019 at 14:05)</a>:</h4>
<p>that we're "about to setup"</p>



<a name="175626853"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175626853" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175626853">(Sep 13 2019 at 14:06)</a>:</h4>
<p>(the canonical place for now is the compiler team calendar, of course)</p>



<a name="175626858"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175626858" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175626858">(Sep 13 2019 at 14:07)</a>:</h4>
<p>anyway, shall we get started?</p>



<a name="175626937"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175626937" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175626937">(Sep 13 2019 at 14:07)</a>:</h4>
<p><span class="user-mention" data-user-id="133169">@matklad</span> and I had kind of identified these questions to help guide us</p>
<p>anyway, shall we get started?</p>
<ul>
<li>Are we on board with pursuing “library-ification”?</li>
<li>What is the first target of library-ification?</li>
<li>As time allows, consider some of the technical details of the above targets, particularly what kind of “boundaries” we can draw.</li>
</ul>
<p>but it seems like we should start maybe by "summarizing" a bit about what's been happening around rust-analyzer + what library-ification means</p>



<a name="175627029"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627029" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627029">(Sep 13 2019 at 14:08)</a>:</h4>
<p>I don't get pinged by <code>T-compiler/meeting</code></p>



<a name="175627065"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627065" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627065">(Sep 13 2019 at 14:08)</a>:</h4>
<p>curious, you are on the list</p>



<a name="175627069"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627069" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627069">(Sep 13 2019 at 14:09)</a>:</h4>
<p>(just checked)</p>



<a name="175627119"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627119" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> varkor <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627119">(Sep 13 2019 at 14:09)</a>:</h4>
<p>I have been in the past, but I didn't get pinged just then</p>



<a name="175627126"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627126" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627126">(Sep 13 2019 at 14:09)</a>:</h4>
<p>cc <span class="user-group-mention" data-user-group-id="897">@T-compiler/meeting</span></p>



<a name="175627139"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627139" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627139">(Sep 13 2019 at 14:09)</a>:</h4>
<p>maybe because I edited the message? :)</p>



<a name="175627145"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627145" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627145">(Sep 13 2019 at 14:09)</a>:</h4>
<p>weird</p>



<a name="175627150"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627150" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627150">(Sep 13 2019 at 14:09)</a>:</h4>
<p>OH</p>



<a name="175627151"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627151" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> varkor <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627151">(Sep 13 2019 at 14:09)</a>:</h4>
<p>ah, that worked <span aria-label="+1" class="emoji emoji-1f44d" role="img" title="+1">:+1:</span></p>



<a name="175627239"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627239" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627239">(Sep 13 2019 at 14:10)</a>:</h4>
<p>yeah that would explain why Zulip had a ghost ping that didn't really show up but counted up the mentions thing</p>



<a name="175627253"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627253" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627253">(Sep 13 2019 at 14:10)</a>:</h4>
<p>let's start =)</p>



<a name="175627272"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627272" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627272">(Sep 13 2019 at 14:10)</a>:</h4>
<p>anyway, re: rust-analyzer and its current status, I don't want to talk too much about it, but it seemed worth mentioning some details. Basically, work there has been proceeding pretty well and rust-analyzer now incuds:</p>
<ul>
<li>some kind of name resolution</li>
<li>integration with chalk</li>
<li>some efforts at a type checker</li>
</ul>
<p>and, notably, a shared lexer with rustc (right, <span class="user-mention" data-user-id="133169">@matklad</span>?)</p>



<a name="175627309"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627309" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627309">(Sep 13 2019 at 14:11)</a>:</h4>
<p>Right!</p>



<a name="175627314"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627314" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627314">(Sep 13 2019 at 14:11)</a>:</h4>
<p>previously when we had talked about, we had discussed the idea of trying to identify key libraries for parts of rustc that we can extract and share</p>



<a name="175627350"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627350" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627350">(Sep 13 2019 at 14:11)</a>:</h4>
<p>and essentially this meeting is to discuss that process in a bit more detail, and talk through some details of possible candidates --</p>



<a name="175627365"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627365" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627365">(Sep 13 2019 at 14:11)</a>:</h4>
<p>though I think there's also room for people to object if they think the overall direction isn't great</p>



<a name="175627429"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627429" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627429">(Sep 13 2019 at 14:12)</a>:</h4>
<p>what does "extract" mean then; refactor a bit and publish to <a href="http://crates.io" target="_blank" title="http://crates.io">crates.io</a> in a "totally unstable" manner?</p>



<a name="175627445"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627445" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627445">(Sep 13 2019 at 14:12)</a>:</h4>
<p>that is a good question, and one of the things we should decide :)</p>



<a name="175627456"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627456" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627456">(Sep 13 2019 at 14:12)</a>:</h4>
<p>I think that we are clearly a long way from "stable APIs" that we expect to support long term</p>



<a name="175627458"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627458" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627458">(Sep 13 2019 at 14:12)</a>:</h4>
<p>I frankly have failed to prove anything because the past year (or two?) have been a mess, so any past objections I may have had are like "eh whatever" now</p>



<a name="175627465"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627465" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627465">(Sep 13 2019 at 14:12)</a>:</h4>
<p>I think another key element is "does extract mean no 'path' dependencies"</p>



<a name="175627483"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627483" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627483">(Sep 13 2019 at 14:13)</a>:</h4>
<p>what I do want to say is that we could use an "abstract MIR"</p>



<a name="175627485"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627485" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627485">(Sep 13 2019 at 14:13)</a>:</h4>
<p>which includes the sort of weird rustc-ap- deps</p>



<a name="175627537"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627537" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627537">(Sep 13 2019 at 14:13)</a>:</h4>
<p>that uses the chalk infrastructure to talk about types and whatnot and is otherwise relatively typesystem-agnostic</p>



<a name="175627539"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627539" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627539">(Sep 13 2019 at 14:13)</a>:</h4>
<p>I wouldn't want "extract" to mean "only stable features" since that removes the possibility to dogfood features in the compiler</p>



<a name="175627547"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627547" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627547">(Sep 13 2019 at 14:13)</a>:</h4>
<p>it would be nice to come up with a list (tree) of libraries that we think the compiler should be comprised of</p>



<a name="175627548"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627548" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627548">(Sep 13 2019 at 14:13)</a>:</h4>
<p>would extrating a stable parser to <a href="http://crates.io" target="_blank" title="http://crates.io">crates.io</a> would mean commiting to a stable AST-like interface?</p>



<a name="175627551"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627551" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627551">(Sep 13 2019 at 14:13)</a>:</h4>
<p>I think that if rust-analyzer is to use the libraries, then a requirement would be that they are ultiamtely dependent on std and work on stable</p>



<a name="175627558"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627558" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627558">(Sep 13 2019 at 14:13)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> I'd define "extract" = builds on stabeli-ish compiler without bootstrap process.</p>



<a name="175627632"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627632" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627632">(Sep 13 2019 at 14:14)</a>:</h4>
<p>why is "works on stable" a requirement here?</p>



<a name="175627635"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627635" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627635">(Sep 13 2019 at 14:14)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> I wish the -ap- crates were never a thing and we just did in-tree builds :(</p>



<a name="175627657"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627657" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627657">(Sep 13 2019 at 14:14)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> working on stable make the project MASSIVELY easier to contribute</p>



<a name="175627677"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627677" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627677">(Sep 13 2019 at 14:15)</a>:</h4>
<p>Yeah. I think that works on stable is ok, but also something we could defer</p>



<a name="175627687"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627687" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627687">(Sep 13 2019 at 14:15)</a>:</h4>
<p>it doesn't seem like the central point</p>



<a name="175627713"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627713" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627713">(Sep 13 2019 at 14:15)</a>:</h4>
<p>the main thing is: trying to build up libraries that can be used as "normal" code</p>



<a name="175627722"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627722" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627722">(Sep 13 2019 at 14:15)</a>:</h4>
<p>True, it's only a means to get "easy build process", it's not an end</p>



<a name="175627724"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627724" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627724">(Sep 13 2019 at 14:15)</a>:</h4>
<p>that is, through the normal "cargo dev process"</p>



<a name="175627743"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627743" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627743">(Sep 13 2019 at 14:15)</a>:</h4>
<p>(I think <code>cargo check</code> is valuable, but that's different than "uses stable compiler")</p>



<a name="175627795"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627795" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627795">(Sep 13 2019 at 14:16)</a>:</h4>
<p>indeed</p>



<a name="175627833"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627833" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627833">(Sep 13 2019 at 14:16)</a>:</h4>
<p>one of the things we discuss in the document, which also seems relevant, is the question of "monorepo vs poly-repo"</p>



<a name="175627843"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627843" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627843">(Sep 13 2019 at 14:16)</a>:</h4>
<p>(and e.g. once we have <code>if let</code> chains I'd like to simplify code in the compiler with it and dogfood it through the compiler)</p>



<a name="175627845"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627845" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627845">(Sep 13 2019 at 14:16)</a>:</h4>
<p>I thkn we've examples of both today --</p>



<a name="175627848"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627848" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627848">(Sep 13 2019 at 14:17)</a>:</h4>
<p>Note that there's a failure in feature-design process, if it <em>requires</em> doggdoffing the compiler: compiler's are only a tiny slice of rust' domain</p>



<a name="175627863"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627863" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627863">(Sep 13 2019 at 14:17)</a>:</h4>
<blockquote>
<p>one of the things we discuss in the document, which also seems relevant, is the question of "monorepo vs poly-repo"</p>
</blockquote>
<p>also known as: Will we reap the benefits if we continue to gate on bors/homu</p>



<a name="175627902"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627902" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627902">(Sep 13 2019 at 14:17)</a>:</h4>
<p>and x.py</p>



<a name="175627908"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627908" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627908">(Sep 13 2019 at 14:17)</a>:</h4>
<p><span class="user-mention" data-user-id="116083">@pnkfelix</span> could you elaborate on this?</p>



<a name="175627959"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627959" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627959">(Sep 13 2019 at 14:18)</a>:</h4>
<p>well, in some sense, no, because we can gate on bors sort of "individually" -- I would put it more so as "gate on src/test/{ui,etc}"</p>



<a name="175627980"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627980" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627980">(Sep 13 2019 at 14:18)</a>:</h4>
<blockquote>
<p><span class="user-mention silent" data-user-id="116083">pnkfelix</span> could you elaborate on this?</p>
</blockquote>
<p>I take monorepo to mean: we continue gating landing any PR through the usual r+ on bors</p>



<a name="175627988"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627988" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oli <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627988">(Sep 13 2019 at 14:18)</a>:</h4>
<p>sorry, internet troubles, ignore my messages</p>



<a name="175627998"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175627998" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175627998">(Sep 13 2019 at 14:18)</a>:</h4>
<p>e.g. I would say that rustc_lexer's unit tests (i.e., <code>cargo test</code>) is actually much weaker than full src/test/ui</p>



<a name="175628012"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628012" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628012">(Sep 13 2019 at 14:18)</a>:</h4>
<blockquote>
<p>Note that there's a failure in feature-design process, if it requires doggdoffing the compiler: compiler's are only a tiny slice of rust' domain</p>
</blockquote>
<p>I disagree; rustc is a huge project and a good place to test features that are sometimes too minor or mostly convenience to expect anyone to use outside</p>



<a name="175628017"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628017" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628017">(Sep 13 2019 at 14:19)</a>:</h4>
<p>having a poly-repo would mean that the individual repos would really have to be rather separate standalone projects that are loosely integrated with the rest of the compiler</p>



<a name="175628031"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628031" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628031">(Sep 13 2019 at 14:19)</a>:</h4>
<blockquote>
<p>I take monorepo to mean: we continue gating landing any PR through the usual r+ on bors</p>
</blockquote>
<p>then <del>you</del> each PR needs to wait its turn</p>



<a name="175628066"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628066" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628066">(Sep 13 2019 at 14:19)</a>:</h4>
<blockquote>
<p>then you each PR needs to wait its turn</p>
</blockquote>
<p>or rollups <span aria-label="slight smile" class="emoji emoji-1f642" role="img" title="slight smile">:slight_smile:</span></p>



<a name="175628069"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628069" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628069">(Sep 13 2019 at 14:19)</a>:</h4>
<blockquote>
<p>e.g. I would say that rustc_lexer's unit tests (i.e., <code>cargo test</code>) is actually much weaker than full src/test/ui</p>
</blockquote>
<p>yes, I think this is a core point. One of the questions that arises around having many libaries is figuring out a good testing strategy</p>



<a name="175628079"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628079" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628079">(Sep 13 2019 at 14:19)</a>:</h4>
<p>in general, one thing that <span class="user-mention" data-user-id="133169">@matklad</span> and I agreed on is that overly narrow unit tests can be "future hostile"</p>



<a name="175628089"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628089" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628089">(Sep 13 2019 at 14:19)</a>:</h4>
<p>rollups are a symptom of something wrong</p>



<a name="175628147"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628147" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628147">(Sep 13 2019 at 14:20)</a>:</h4>
<p>not an answer.</p>



<a name="175628164"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628164" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628164">(Sep 13 2019 at 14:20)</a>:</h4>
<p>i.e., if you change how the library works in some fundamental way, it becomes really hard to port those tests forward, whereas e.g. src/test/ui tests are relatively easy</p>



<a name="175628172"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628172" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628172">(Sep 13 2019 at 14:20)</a>:</h4>
<p>isn't this the standard separation between unit tests and integration tests? you kinda want both?</p>



<a name="175628183"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628183" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628183">(Sep 13 2019 at 14:20)</a>:</h4>
<p>yeah it is, nothing magic</p>



<a name="175628188"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628188" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628188">(Sep 13 2019 at 14:20)</a>:</h4>
<p>this reminds me, one crate that's not necessarily relevant to rust-analyzer but could be useful to other projects is <code>rustc_apfloat</code> - see <a href="https://github.com/rust-lang/rust/issues/55993" target="_blank" title="https://github.com/rust-lang/rust/issues/55993">https://github.com/rust-lang/rust/issues/55993</a></p>



<a name="175628199"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628199" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628199">(Sep 13 2019 at 14:20)</a>:</h4>
<p>but I think it also informs the boundaries that make a good library</p>



<a name="175628206"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628206" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628206">(Sep 13 2019 at 14:20)</a>:</h4>
<p>so it could be a test subject</p>



<a name="175628218"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628218" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628218">(Sep 13 2019 at 14:20)</a>:</h4>
<p><span class="user-mention" data-user-id="116083">@pnkfelix</span> eh well... I think rolling up small docs PRs are not a symptom of a problem... and the problem where it exists is mostly "we need better machines"</p>



<a name="175628219"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628219" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oli <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628219">(Sep 13 2019 at 14:20)</a>:</h4>
<p>wouldn't the gating be on "bumping rustc version dependency on crate", so that only happens every now and then, and the crate can be developed independently</p>



<a name="175628271"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628271" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628271">(Sep 13 2019 at 14:21)</a>:</h4>
<p>I'm strongly in favor of a monorepo; I don't want to audit what a <code>Cargo.lock</code> file meant in terms of changes to the language from a lang team POV.</p>



<a name="175628307"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628307" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628307">(Sep 13 2019 at 14:21)</a>:</h4>
<blockquote>
<p>wouldn't the gating be on "bumping rustc version dependency on crate", so that only happens every now and then, and the crate can be developed independently</p>
</blockquote>
<p>some challenges I see here:</p>
<ul>
<li>reviewing those bumps is hard, so we have to have confidence in the review process for the separate projects (which I think we can do)</li>
<li>integration tests may live on rustc too</li>
</ul>



<a name="175628414"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628414" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628414">(Sep 13 2019 at 14:22)</a>:</h4>
<p>I meant that niko, having the integration tests living where the crate is used</p>



<a name="175628420"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628420" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> varkor <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628420">(Sep 13 2019 at 14:22)</a>:</h4>
<blockquote>
<p>so that only happens every now and then</p>
</blockquote>
<p>maybe this could be done automatically: build a version of rust with all updated dependencies every day (or so), so we identify problems that have snuck into the libraries early</p>



<a name="175628445"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628445" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oli <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628445">(Sep 13 2019 at 14:22)</a>:</h4>
<p>sure</p>



<a name="175628449"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628449" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628449">(Sep 13 2019 at 14:23)</a>:</h4>
<p>So, i'm not hearing a lot of people arguing about <em>whether</em> we should try to extract libraries with stronger boundaries, mostly about some details of how we should do it?</p>



<a name="175628470"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628470" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628470">(Sep 13 2019 at 14:23)</a>:</h4>
<p>I think petrochenkov may have expressed concern in the past</p>



<a name="175628482"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628482" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628482">(Sep 13 2019 at 14:23)</a>:</h4>
<p>I'd like to see something like LLVM's model, where everything is a transformation from data to data</p>



<a name="175628483"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628483" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628483">(Sep 13 2019 at 14:23)</a>:</h4>
<p>but I'm not sure if that was more about mono-repo vs poly-repo Q</p>



<a name="175628490"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628490" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> varkor <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628490">(Sep 13 2019 at 14:23)</a>:</h4>
<p>if we did automatic updating as well, then reviewing bumps wouldn't be so problematic</p>



<a name="175628498"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628498" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628498">(Sep 13 2019 at 14:23)</a>:</h4>
<p>that would enable having rather stable unit tests (because the data definition is stable)</p>



<a name="175628515"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628515" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628515">(Sep 13 2019 at 14:23)</a>:</h4>
<p>(oh and I think <span class="user-mention" data-user-id="123856">@Vadim Petrochenkov</span> was also concerned about inefficiency from (increased) breaking into multiple cratees)</p>



<a name="175628526"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628526" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628526">(Sep 13 2019 at 14:24)</a>:</h4>
<p>One concern that I've had is that due to coherence it's a bit harder if we split up into crates</p>



<a name="175628580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628580">(Sep 13 2019 at 14:24)</a>:</h4>
<p>I'm wondering if the best way to resolve these details around mono-vs-poliy-repo and workflow is to do a bit more experimentation first and revisit with more experience. At present we have some projects trying to inhabit both worlds.</p>



<a name="175628594"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628594" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628594">(Sep 13 2019 at 14:24)</a>:</h4>
<p>you could then have a human readable encoding of the data for writing tests</p>



<a name="175628605"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628605" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628605">(Sep 13 2019 at 14:24)</a>:</h4>
<p>e.g., I'm pretty reluctant to move chalk or polonius into the monorepo at present</p>



<a name="175628636"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628636" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628636">(Sep 13 2019 at 14:24)</a>:</h4>
<blockquote>
<p>that would enable having rather stable unit tests (because the data definition is stable)</p>
</blockquote>
<p>yes, this I think is an interesting question too. Chalk kind of steers a middle course here</p>



<a name="175628648"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628648" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628648">(Sep 13 2019 at 14:24)</a>:</h4>
<p><span class="user-mention" data-user-id="124287">@mw</span> /me thinks of the Clojure "it's just data" joke ;)</p>



<a name="175628667"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628667" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628667">(Sep 13 2019 at 14:25)</a>:</h4>
<p>(the input is defined as queries that we demand from some environment, but we have a "driver" that reads data input in a canonical text format for testing)</p>



<a name="175628676"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628676" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628676">(Sep 13 2019 at 14:25)</a>:</h4>
<p>yes</p>



<a name="175628693"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628693" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628693">(Sep 13 2019 at 14:25)</a>:</h4>
<p>it would require quite a bit of initial setup, I guess</p>



<a name="175628698"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628698" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628698">(Sep 13 2019 at 14:25)</a>:</h4>
<p>(and one of the things I'd like to do is to make it easy to extract "traces" from rust-analyzer, <span class="user-mention" data-user-id="129457">@Florian Diebold</span> did some first steps towards this and its very useful)</p>



<a name="175628705"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628705" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628705">(Sep 13 2019 at 14:25)</a>:</h4>
<p>i.e., so we can make unit tests from problematic scenarios</p>



<a name="175628730"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628730" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628730">(Sep 13 2019 at 14:25)</a>:</h4>
<p>in rust-analyzer, all tests are data-in / data-out. The problem is that data-in is rust surface syntax, so it depends on the lower parts of the compiler's stack</p>



<a name="175628739"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628739" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628739">(Sep 13 2019 at 14:25)</a>:</h4>
<p>(also, that text format is based on rust syntax, so it should be "long lived")</p>



<a name="175628834"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628834" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628834">(Sep 13 2019 at 14:26)</a>:</h4>
<p>in any case, if we have general agreement around library-ification, maybe it makes sense to turn to some specifics of possible libraries? and maybe someone (prob me) can go back over the transcript later and try to pick out and summarize the pros/cons from various setups for future discussion</p>



<a name="175628839"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628839" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628839">(Sep 13 2019 at 14:26)</a>:</h4>
<p>FWIW the grammars we want to work with in wg-grammar are meant to be extensible so chalk could eventually be built on that</p>



<a name="175628901"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628901" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628901">(Sep 13 2019 at 14:27)</a>:</h4>
<p>in the <a href="https://hackmd.io/_ixQrAr5TKafV9m8eSU_VA?view" target="_blank" title="https://hackmd.io/_ixQrAr5TKafV9m8eSU_VA?view">hackmd document</a> we listed out</p>
<ul>
<li>lexer and parser</li>
<li>name resolution</li>
<li>traits + "type constraint solving"</li>
</ul>



<a name="175628905"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628905" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628905">(Sep 13 2019 at 14:27)</a>:</h4>
<p>(or you can even replace some syntax, like <code>WhereClause</code>, with Chalk's equivalent)</p>



<a name="175628921"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628921" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628921">(Sep 13 2019 at 14:27)</a>:</h4>
<p>probably in order of "well to least undersztood"? maybe not, kind of a toss-up between name res and traits</p>



<a name="175628927"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628927" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628927">(Sep 13 2019 at 14:27)</a>:</h4>
<p>but each has interesting characteristics</p>



<a name="175628997"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628997" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628997">(Sep 13 2019 at 14:28)</a>:</h4>
<p>name resolution is worse than traits IME, but maybe less code in total</p>



<a name="175628999"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175628999" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175628999">(Sep 13 2019 at 14:28)</a>:</h4>
<p>(I think I still don't really understand what library-ification means)</p>



<a name="175629012"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629012" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629012">(Sep 13 2019 at 14:28)</a>:</h4>
<p>it's less pure than trait solving, that's the sad part</p>



<a name="175629026"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629026" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629026">(Sep 13 2019 at 14:28)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> yeah, I don't think we clarified that :)</p>



<a name="175629029"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629029" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> varkor <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629029">(Sep 13 2019 at 14:28)</a>:</h4>
<p>does the diagnostics extraction fit this theme too?</p>



<a name="175629071"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629071" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629071">(Sep 13 2019 at 14:29)</a>:</h4>
<blockquote>
<p>(I think I still don't really understand what library-ification means)</p>
</blockquote>
<p>is it worth discussing more about this then</p>



<a name="175629086"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629086" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629086">(Sep 13 2019 at 14:29)</a>:</h4>
<p>I think best-understood is probably parser, lowering, and typeck?</p>



<a name="175629107"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629107" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629107">(Sep 13 2019 at 14:29)</a>:</h4>
<p>I think the most important question is probably "does it just mean making a new crate" (in my view, no)</p>



<a name="175629139"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629139" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629139">(Sep 13 2019 at 14:29)</a>:</h4>
<p>"library-ification" : add entry point that isn't the <code>rustc</code> binary, for testing?</p>



<a name="175629149"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629149" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629149">(Sep 13 2019 at 14:30)</a>:</h4>
<p>it's really about producing something that is relatively disentangled from the specifics of rustc and reusable in more contexts, right?</p>



<a name="175629203"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629203" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629203">(Sep 13 2019 at 14:30)</a>:</h4>
<blockquote>
<p>does the diagnostics extraction fit this theme too?</p>
</blockquote>
<p>that's a good question :) I think yes but it is distinct from the other examples we've given</p>



<a name="175629211"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629211" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629211">(Sep 13 2019 at 14:30)</a>:</h4>
<p><span class="user-mention" data-user-id="116083">@pnkfelix</span> I mean that's <code>rustc_interface</code> isn't it?</p>



<a name="175629224"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629224" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629224">(Sep 13 2019 at 14:30)</a>:</h4>
<p>but it fits my "disentangled" above?</p>



<a name="175629264"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629264" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629264">(Sep 13 2019 at 14:30)</a>:</h4>
<p>you could build a tiny LSP (like, a subset of RLS) on top of <code>rustc_interface</code> and a bit of glue code, for example</p>



<a name="175629277"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629277" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629277">(Sep 13 2019 at 14:30)</a>:</h4>
<p>I think in some sense it means decoupling things "until" rustc_interface or some similar crate ties things together</p>



<a name="175629289"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629289" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629289">(Sep 13 2019 at 14:31)</a>:</h4>
<p>right</p>



<a name="175629314"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629314" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629314">(Sep 13 2019 at 14:31)</a>:</h4>
<p>Yeah, I think we want to detangle not from the binary, but from the types and state. Like, a library-ified parser shouldn't have a ParseSess</p>



<a name="175629324"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629324" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629324">(Sep 13 2019 at 14:31)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span>  generally, it sorta sounds like "simpler boundaries with less implicit state between libraries"</p>



<a name="175629329"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629329" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629329">(Sep 13 2019 at 14:31)</a>:</h4>
<p>so e.g. one could imagine that library-ification of the parser means that librustc does not depend on a parser</p>



<a name="175629334"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629334" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629334">(Sep 13 2019 at 14:31)</a>:</h4>
<p>and probably there is a bit of a "ladder" -- so e.g. we might (eventually) have some crate that defines type representations, and presumably other steps will use that</p>



<a name="175629418"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629418" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629418">(Sep 13 2019 at 14:32)</a>:</h4>
<blockquote>
<p>so e.g. one could imagine that library-ification of the parser means that librustc does not depend on a parser</p>
</blockquote>
<p>I think this is not as imporant -- librustc might link directly to the parser crate, but it's more about "other people can drive the parser in a relatively straight-forward way"</p>



<a name="175629430"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629430" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629430">(Sep 13 2019 at 14:32)</a>:</h4>
<p>e.g., the lexer was extracted into a library</p>



<a name="175629434"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629434" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629434">(Sep 13 2019 at 14:32)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> that feels very clean -- we have crates defining data representation, and crates defining transforms between those representations</p>



<a name="175629438"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629438" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629438">(Sep 13 2019 at 14:32)</a>:</h4>
<p>it doesn't mean that rustc doesn't know which lexer it's using</p>



<a name="175629469"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629469" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629469">(Sep 13 2019 at 14:32)</a>:</h4>
<p>(this is kind of what I was getting at with this "ladder" discussion above)</p>



<a name="175629482"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629482" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> varkor <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629482">(Sep 13 2019 at 14:32)</a>:</h4>
<p>it's the sort of process that would make it easier to write an independent compiler, reusing some of the same components</p>



<a name="175629492"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629492" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629492">(Sep 13 2019 at 14:33)</a>:</h4>
<p>(that said, we would want to reduce coupling where we can)</p>



<a name="175629500"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629500" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629500">(Sep 13 2019 at 14:33)</a>:</h4>
<p>I'd like to remove steps from the ladder :)</p>



<a name="175629547"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629547" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629547">(Sep 13 2019 at 14:33)</a>:</h4>
<p>(<a href="https://www.youtube.com/watch?v=jlPaby7suOc" target="_blank" title="https://www.youtube.com/watch?v=jlPaby7suOc">https://www.youtube.com/watch?v=jlPaby7suOc</a> ^,-)</p>
<div class="youtube-video message_inline_image"><a data-id="jlPaby7suOc" href="https://www.youtube.com/watch?v=jlPaby7suOc" target="_blank" title="https://www.youtube.com/watch?v=jlPaby7suOc"><img src="https://i.ytimg.com/vi/jlPaby7suOc/default.jpg"></a></div>



<a name="175629550"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629550" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629550">(Sep 13 2019 at 14:33)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> although it would be lovely to install a compilation firewall (a-la C++'s pimpl) between the lexer and the rest of the compiler, just to avoid rebuilds. But I think rust doesn't have good idioms for this yet.</p>



<a name="175629578"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629578" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629578">(Sep 13 2019 at 14:33)</a>:</h4>
<p>say more, <span class="user-mention" data-user-id="124287">@mw</span>? one question I've been wondering about is what makes sense to think of a "unit". I make a case in the hackmd doc, for example, that "chalk" should encompass more things -- e.g. definition of types, unification, and constraint solving</p>



<a name="175629650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629650">(Sep 13 2019 at 14:34)</a>:</h4>
<blockquote>
<p>although it would be lovely to install a compilation firewall (a-la C++'s pimpl) between the lexer and the rest of the compiler, just to avoid rebuilds. But I think rust doesn't have good idioms for this yet.</p>
</blockquote>
<p>yes, I just think that's mildly orthogonal.</p>



<a name="175629671"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629671" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629671">(Sep 13 2019 at 14:34)</a>:</h4>
<blockquote>
<p>But I think rust doesn't have good idioms for this yet.</p>
</blockquote>
<p>How do you mean?</p>



<a name="175629686"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629686" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629686">(Sep 13 2019 at 14:34)</a>:</h4>
<p>(re. coherence and traits, one can just... not use traits for this... ^^)</p>



<a name="175629710"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629710" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629710">(Sep 13 2019 at 14:34)</a>:</h4>
<p>Servo uses crates that only have data types and traits in them</p>



<a name="175629716"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629716" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629716">(Sep 13 2019 at 14:34)</a>:</h4>
<p>a lot</p>



<a name="175629728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629728">(Sep 13 2019 at 14:34)</a>:</h4>
<p>specifically to avoid recompilation when changing the implementation</p>



<a name="175629770"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629770" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629770">(Sep 13 2019 at 14:35)</a>:</h4>
<p>it seems like finding the "right" place to draw boundaries is important on this point</p>



<a name="175629771"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629771" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629771">(Sep 13 2019 at 14:35)</a>:</h4>
<p>yeah, I think it would be good to have a shallow graph of crates</p>



<a name="175629777"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629777" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629777">(Sep 13 2019 at 14:35)</a>:</h4>
<p>but also that doing better with incremental may make it a moot point</p>



<a name="175629804"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629804" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629804">(Sep 13 2019 at 14:35)</a>:</h4>
<p>(if compilaton time is the sole concern)</p>



<a name="175629853"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629853" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629853">(Sep 13 2019 at 14:36)</a>:</h4>
<p>having a split between type definition crates and logic crates seems good</p>



<a name="175629861"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629861" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629861">(Sep 13 2019 at 14:36)</a>:</h4>
<p><span class="user-mention" data-user-id="119009">@eddyb</span>  those traits being internal to the crate &amp; then free functions between?</p>



<a name="175629881"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629881" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629881">(Sep 13 2019 at 14:36)</a>:</h4>
<p>no it's just a set of data and behaviors</p>



<a name="175629882"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629882" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629882">(Sep 13 2019 at 14:36)</a>:</h4>
<p>and having infrastructure crates, like salsa</p>



<a name="175629890"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629890" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629890">(Sep 13 2019 at 14:36)</a>:</h4>
<p>that another crate implements</p>



<a name="175629903"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629903" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629903">(Sep 13 2019 at 14:36)</a>:</h4>
<p>so <code>libast</code>, <code>libparser</code>, <code>libfeature_gate</code>, etc. then?</p>



<a name="175629917"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629917" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629917">(Sep 13 2019 at 14:36)</a>:</h4>
<blockquote>
<p>having a split between type definition crates and logic crates seems good</p>
</blockquote>
<p>(I agree with this, incidentally, I do like the idea of factoring out "the IR" from the rest)</p>



<a name="175629918"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629918" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629918">(Sep 13 2019 at 14:36)</a>:</h4>
<p>and diagnostics would also be infrastructure</p>



<a name="175629940"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629940" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629940">(Sep 13 2019 at 14:37)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> not that fine-grained</p>



<a name="175629948"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629948" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629948">(Sep 13 2019 at 14:37)</a>:</h4>
<p>more like libsyntax_traits and libsyntax</p>



<a name="175629950"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629950" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629950">(Sep 13 2019 at 14:37)</a>:</h4>
<p>do we now feel like we have a good idea what "library-ification" is? maybe we should try to summarize. I think we captured the spirit of our goal, but we also came up with various guidelines</p>



<a name="175629979"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175629979" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175629979">(Sep 13 2019 at 14:37)</a>:</h4>
<p>the spirit being: a set of reusable components that could be combined to build new tools, new compilers, etc.</p>



<a name="175630001"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630001" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630001">(Sep 13 2019 at 14:37)</a>:</h4>
<p>as distinct from just "lots of crates"</p>



<a name="175630090"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630090" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630090">(Sep 13 2019 at 14:38)</a>:</h4>
<p><span class="user-mention" data-user-id="119009">@eddyb</span>  hmm... maybe libfeature_gate is excessive, (maybe not...) but libast &amp; libparser seems like what <span class="user-mention" data-user-id="124287">@mw</span>  is saying</p>



<a name="175630115"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630115" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630115">(Sep 13 2019 at 14:38)</a>:</h4>
<p>some guidelines might be:</p>
<ul>
<li>separating out the IR definition from the logic</li>
<li>trying to separate infrastructure (e.g., the query system "plumbing", or diagnostic printing)</li>
<li>trying to draw boundaries that let us express tests as "input files", ideally ones that are independent from the details of the implementation, which are expected to change</li>
</ul>



<a name="175630131"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630131" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630131">(Sep 13 2019 at 14:38)</a>:</h4>
<p>(did I miss things?)</p>



<a name="175630147"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630147" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630147">(Sep 13 2019 at 14:38)</a>:</h4>
<p>so we have parser + lowering communicating via libast and they don't know each other otherwise</p>



<a name="175630185"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630185" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630185">(Sep 13 2019 at 14:39)</a>:</h4>
<p>yeah and you can substitute libparser if you wanted to</p>



<a name="175630219"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630219" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630219">(Sep 13 2019 at 14:39)</a>:</h4>
<p>certainly a lot of this structure is "inherent" in the compiler already, albeit in a messy form</p>



<a name="175630243"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630243" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630243">(Sep 13 2019 at 14:39)</a>:</h4>
<p>yeah</p>



<a name="175630249"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630249" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630249">(Sep 13 2019 at 14:39)</a>:</h4>
<p>so we're trying to tease that out</p>



<a name="175630251"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630251" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630251">(Sep 13 2019 at 14:39)</a>:</h4>
<p>Though replacing libparser would be sort of "hard" i.e., maybe you'd need to patch it out via Cargo.toml, we don't want to get into dylibs here or w/e</p>



<a name="175630293"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630293" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630293">(Sep 13 2019 at 14:40)</a>:</h4>
<p>(right?)</p>



<a name="175630315"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630315" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630315">(Sep 13 2019 at 14:40)</a>:</h4>
<p>yeah I meant source-wise</p>



<a name="175630330"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630330" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630330">(Sep 13 2019 at 14:40)</a>:</h4>
<p>I'd lke to keep "hot swapping" components as a "tabled" topic :)</p>



<a name="175630335"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630335" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630335">(Sep 13 2019 at 14:40)</a>:</h4>
<p>you could build two impls and then switch them in the Cargo.toml</p>



<a name="175630336"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630336" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630336">(Sep 13 2019 at 14:40)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> I think one missing bit is "making sure that libraries work for IDE"</p>



<a name="175630339"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630339" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630339">(Sep 13 2019 at 14:40)</a>:</h4>
<p>I'd like it if things like specific string interning strategies would not need to be known throughout the compiler</p>



<a name="175630368"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630368" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630368">(Sep 13 2019 at 14:40)</a>:</h4>
<p>We could extract <code>libast</code> from current <code>libsyntax</code>, but that would be pretty useless for rust-analyzer</p>



<a name="175630372"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630372" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630372">(Sep 13 2019 at 14:40)</a>:</h4>
<blockquote>
<p>I think one missing bit is "making sure that libraries work for IDE"</p>
</blockquote>
<p>that's a good point -- the design of the interface needs to accommodate "on demand" processing</p>



<a name="175630402"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630402" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630402">(Sep 13 2019 at 14:41)</a>:</h4>
<p><span class="user-mention" data-user-id="124287">@mw</span> if we had a trait for interning and a trait for accessing the data, that'd be better right?</p>



<a name="175630410"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630410" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630410">(Sep 13 2019 at 14:41)</a>:</h4>
<p>do we see that as a first order bit though? It seems like it might be something we'd want to wait on, right?</p>



<a name="175630413"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630413" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630413">(Sep 13 2019 at 14:41)</a>:</h4>
<p>(I left some notes in the doc of places where chalk's queries, for example, were suboptimal and we need to rework them a bit)</p>



<a name="175630426"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630426" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630426">(Sep 13 2019 at 14:41)</a>:</h4>
<p><span class="user-mention" data-user-id="119009">@eddyb</span> yeah, something like that.</p>



<a name="175630428"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630428" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630428">(Sep 13 2019 at 14:41)</a>:</h4>
<p>also such libast should be possible to encode possibly partially missing/invalid AST?</p>



<a name="175630430"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630430" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630430">(Sep 13 2019 at 14:41)</a>:</h4>
<blockquote>
<p>do we see that as a first order bit though? It seems like it might be something we'd want to wait on, right?</p>
</blockquote>
<p>mm I think it's pretty imporant</p>



<a name="175630437"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630437" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630437">(Sep 13 2019 at 14:41)</a>:</h4>
<p>I actually use <code>Index&lt;IStr, Output = str&gt;</code> in <code>grammer</code></p>



<a name="175630440"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630440" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630440">(Sep 13 2019 at 14:41)</a>:</h4>
<p>as is often the case for the IDEs</p>



<a name="175630460"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630460" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630460">(Sep 13 2019 at 14:41)</a>:</h4>
<p><span class="user-mention" data-user-id="153740">@Igor Matuszewski</span> can have sentinels for that</p>



<a name="175630464"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630464" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630464">(Sep 13 2019 at 14:41)</a>:</h4>
<p>yes, that's important</p>



<a name="175630465"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630465" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630465">(Sep 13 2019 at 14:41)</a>:</h4>
<p>feels like typed holes</p>



<a name="175630468"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630468" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630468">(Sep 13 2019 at 14:41)</a>:</h4>
<p><span class="user-mention" data-user-id="153740">@Igor Matuszewski</span> that's an interesting question</p>



<a name="175630524"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630524" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630524">(Sep 13 2019 at 14:42)</a>:</h4>
<p>this is another thing that came up around chalk + rust-analyzer, wnating e.g. an error type</p>



<a name="175630530"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630530" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630530">(Sep 13 2019 at 14:42)</a>:</h4>
<p>I think it's important, yes, but it's not clear to me that we don't get a lot of benefit from doing this library-ification internally without bringing IDEs into it :)</p>



<a name="175630545"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630545" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630545">(Sep 13 2019 at 14:42)</a>:</h4>
<p>i.e. there are probably things were the reqs for a batch compiler and IDEs diverge</p>



<a name="175630548"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630548" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630548">(Sep 13 2019 at 14:42)</a>:</h4>
<p>well, I think we get benefit, but it seems like if we're going through the trouble to design an interface</p>



<a name="175630552"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630552" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630552">(Sep 13 2019 at 14:42)</a>:</h4>
<p>I also want to avoid putting two things together and then never actually doing it</p>



<a name="175630558"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630558" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630558">(Sep 13 2019 at 14:42)</a>:</h4>
<p>we shoulld take the time to think about it</p>



<a name="175630598"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630598" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630598">(Sep 13 2019 at 14:43)</a>:</h4>
<p>we don't have to do all at once</p>



<a name="175630609"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630609" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630609">(Sep 13 2019 at 14:43)</a>:</h4>
<p>can just do libast, parser, lowering as one step for example</p>



<a name="175630616"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630616" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630616">(Sep 13 2019 at 14:43)</a>:</h4>
<p>But I think a viable outcome of said thinking is "we can start before finishing our thinking"</p>



<a name="175630638"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630638" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630638">(Sep 13 2019 at 14:43)</a>:</h4>
<p>sure, but improving the IDE experience is an important task for both short- and long-term</p>



<a name="175630641"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630641" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630641">(Sep 13 2019 at 14:43)</a>:</h4>
<p>we don't, but I think we should prioritize things that can help with the IDE experience -- and yes, I think we would do things in stages, and maybe we just start by trying to sever links</p>



<a name="175630702"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630702" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630702">(Sep 13 2019 at 14:44)</a>:</h4>
<p>but e.g. we're not aiming to develop some "pristine" interface that doesn't have to worry about error reporting</p>



<a name="175630705"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630705" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630705">(Sep 13 2019 at 14:44)</a>:</h4>
<p>or messy inputs</p>



<a name="175630739"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630739" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630739">(Sep 13 2019 at 14:44)</a>:</h4>
<p>and those things are often important to think about early on</p>



<a name="175630767"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630767" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630767">(Sep 13 2019 at 14:44)</a>:</h4>
<p>( chalk e.g. <em>hasn't</em> thought about them, but I think it should; to be fair, the existing trait solver in rust only barely does :P )</p>



<a name="175630786"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630786" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630786">(Sep 13 2019 at 14:45)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> sure, but that messiness already exists in e.g. libparser &amp; friends so it will be noticed when we refactor?</p>



<a name="175630795"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630795" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630795">(Sep 13 2019 at 14:45)</a>:</h4>
<p>anyway, is there a "disagreement" here? if so, I guess it might be about how to prioritize effort</p>



<a name="175630808"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630808" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630808">(Sep 13 2019 at 14:45)</a>:</h4>
<p>but I think the answer is probably "not"</p>



<a name="175630817"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630817" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630817">(Sep 13 2019 at 14:45)</a>:</h4>
<p>Yes, I think this is purely about prioritization/ordering</p>



<a name="175630836"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630836" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630836">(Sep 13 2019 at 14:45)</a>:</h4>
<p>so we have 15 minutes left</p>



<a name="175630892"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630892" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630892">(Sep 13 2019 at 14:46)</a>:</h4>
<p>I identified two potential disagreements: 1) stable/nightly features &amp; dogfooding, 2) mono/poly repo.<br>
Otherwise it seems we have consensus for <span class="user-mention" data-user-id="124287">@mw</span>'s philosophy?</p>



<a name="175630895"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630895" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630895">(Sep 13 2019 at 14:46)</a>:</h4>
<p>anything that keeps rustc and rust-analyzer pulling in the same direction is good for now, I'd say</p>



<a name="175630946"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630946" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630946">(Sep 13 2019 at 14:46)</a>:</h4>
<p>I think a poly repo should only be done when everything is in really good shape for doing so</p>



<a name="175630981"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630981" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630981">(Sep 13 2019 at 14:47)</a>:</h4>
<p>it's the more difficult option</p>



<a name="175630995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175630995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175630995">(Sep 13 2019 at 14:47)</a>:</h4>
<p>which needs things to be in a clean, decoupled state</p>



<a name="175631016"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631016" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631016">(Sep 13 2019 at 14:47)</a>:</h4>
<p>things I think we could dig into </p>
<ul>
<li>poly vs mono repo -- ok, some of that already :)</li>
<li>how much <em>do</em> we want to prioritize this work, and in particular integration around rust-analyzer? I know <span class="user-mention" data-user-id="133169">@matklad</span> would like to have more involvement from compiler team writ large</li>
<li>specifics of particular libraries (likely not enough time)</li>
</ul>



<a name="175631018"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631018" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631018">(Sep 13 2019 at 14:47)</a>:</h4>
<p>it might be a better option in the future though</p>



<a name="175631040"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631040" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631040">(Sep 13 2019 at 14:47)</a>:</h4>
<p>I think if we are extracting something from rustc, doing it in repo makes a lot of sense</p>



<a name="175631080"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631080" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631080">(Sep 13 2019 at 14:48)</a>:</h4>
<p><span aria-label="+1" class="emoji emoji-1f44d" role="img" title="+1">:+1:</span>  -- I'd personally not do poly-repos ever so not doing it for a long time is good from that POV <span aria-label="slight smile" class="emoji emoji-1f642" role="img" title="slight smile">:slight_smile:</span></p>



<a name="175631084"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631084" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631084">(Sep 13 2019 at 14:48)</a>:</h4>
<p>(and potentially moving out at some point)</p>



<a name="175631152"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631152" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631152">(Sep 13 2019 at 14:49)</a>:</h4>
<blockquote>
<ul>
<li>how much <em>do</em> we want to prioritize this work, and in particular integration around rust-analyzer? I know <span class="user-mention silent" data-user-id="133169">matklad</span> would like to have more involvement from compiler team writ large</li>
</ul>
</blockquote>
<p>maybe I should rephrase this -- can we do more to help support this effort? are there folks who'd like to express an interest in collaborating on some of these projects?</p>



<a name="175631184"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631184" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631184">(Sep 13 2019 at 14:49)</a>:</h4>
<p>(with polyrepos, implementing a new language change, e.g. or-patterns, that touches many parts of the compiler becomes really hard)</p>



<a name="175631308"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631308" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631308">(Sep 13 2019 at 14:50)</a>:</h4>
<p>maybe name resolution is an area where we could think about getting more interaction?</p>



<a name="175631340"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631340" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631340">(Sep 13 2019 at 14:51)</a>:</h4>
<p>(I was supposed  to help with nameres but compiler stuff, as well as life, was major distraction )</p>



<a name="175631349"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631349" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631349">(Sep 13 2019 at 14:51)</a>:</h4>
<p>I'm personally mostly interested in helping out with refactorings (I've been doing some internal ones in parser, lowering, and typeck)</p>



<a name="175631350"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631350" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631350">(Sep 13 2019 at 14:51)</a>:</h4>
<p>I intend to be pushing hard in/around traits personally, though I'm trying to figure out how much time that means, particularly as I think we need to keep moving on bugs in/around rustc's trait system</p>



<a name="175631377"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631377" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631377">(Sep 13 2019 at 14:51)</a>:</h4>
<p>I also think we shouldn't try to do everything at once</p>



<a name="175631378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631378">(Sep 13 2019 at 14:51)</a>:</h4>
<p>Specifically, name-resolution would be the most valuable thing for rust-analyzer, but it's also one of the thorniest bits</p>



<a name="175631509"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631509" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631509">(Sep 13 2019 at 14:52)</a>:</h4>
<p><span class="user-mention" data-user-id="133169">@matklad</span>  libast,nameres,parser,lowering seem natural as a first pass then?</p>



<a name="175631511"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631511" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631511">(Sep 13 2019 at 14:52)</a>:</h4>
<p>when you say you'd like more interaction from t-compiler, <span class="user-mention" data-user-id="133169">@matklad</span>, what are you thinking of more specifically?</p>



<a name="175631526"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631526" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631526">(Sep 13 2019 at 14:52)</a>:</h4>
<p>I personally am planning to keep the whole rust-analyzer afloat, as well as chipping bits of the rustc's parser here and there</p>



<a name="175631537"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631537" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631537">(Sep 13 2019 at 14:52)</a>:</h4>
<p>e.g. I could imagine a few things</p>
<ul>
<li>coding support</li>
<li>feedback on things like how the ast is actually implemented, and other bits of the design</li>
<li>tweets</li>
</ul>



<a name="175631558"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631558" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631558">(Sep 13 2019 at 14:53)</a>:</h4>
<p>and more no doubt :)</p>



<a name="175631595"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631595" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631595">(Sep 13 2019 at 14:53)</a>:</h4>
<p>perhaps we can "let the types tell us what the phases of library-ification are"</p>



<a name="175631603"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631603" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631603">(Sep 13 2019 at 14:53)</a>:</h4>
<p>I'm thinking that trying to create shared libraries is obviously a "forcing function" for coming to agreement around interfaces</p>



<a name="175631662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631662">(Sep 13 2019 at 14:53)</a>:</h4>
<p>it seems like we've been sort of side-stepping the ast/hir in the things we've chosen so far</p>



<a name="175631718"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631718" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631718">(Sep 13 2019 at 14:54)</a>:</h4>
<p>which .. is probably good to start, but also putting off some of the most important work?</p>



<a name="175631729"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631729" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631729">(Sep 13 2019 at 14:54)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> I belive libast in the current state would be useful for rust-analyzer.  Designing the ast that works for both rustc and rust-analyzer seems like a really major needs-design things. I'd prefer to clean up things <em>around</em> AST first. In particular, I think it's possible to make a parser that doens't know a specific AST type</p>



<a name="175631733"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631733" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631733">(Sep 13 2019 at 14:54)</a>:</h4>
<p>(I guess it depends on how the parser works)</p>



<a name="175631748"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631748" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631748">(Sep 13 2019 at 14:54)</a>:</h4>
<p>s/useful/useless :)</p>



<a name="175631778"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631778" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631778">(Sep 13 2019 at 14:55)</a>:</h4>
<p><span class="user-mention" data-user-id="133169">@matklad</span> are you thinking of some sort of "tagless final interpreter" scheme?</p>



<a name="175631786"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631786" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631786">(Sep 13 2019 at 14:55)</a>:</h4>
<p>maybe we should use last 5 minutes or so to talk about follow-up actions? do we want to try to have follow-up meetings, for example, to talk about specific library-ification details?</p>



<a name="175631812"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631812" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631812">(Sep 13 2019 at 14:55)</a>:</h4>
<p>(or not meetings, just splinter out :)</p>



<a name="175631819"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631819" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631819">(Sep 13 2019 at 14:55)</a>:</h4>
<p>I am thinking about untyped event-based parser :)</p>



<a name="175631830"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631830" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631830">(Sep 13 2019 at 14:55)</a>:</h4>
<p>(e.g. I'd like to folow along with how a parser library-ification will work)</p>



<a name="175631865"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631865" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631865">(Sep 13 2019 at 14:55)</a>:</h4>
<p>+1, I thin the parser plans needs a separate meeting</p>



<a name="175631918"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631918" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631918">(Sep 13 2019 at 14:56)</a>:</h4>
<p>it sounds like a small core of folks could get together</p>



<a name="175631923"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631923" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631923">(Sep 13 2019 at 14:56)</a>:</h4>
<p>talk over zulip and whatever</p>



<a name="175631939"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631939" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631939">(Sep 13 2019 at 14:56)</a>:</h4>
<p>and then talk to the rest of us about it? :)</p>



<a name="175631986"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631986" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631986">(Sep 13 2019 at 14:56)</a>:</h4>
<p>I'd be game for that since I've done a lot of hacking on the parser lately</p>



<a name="175631987"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175631987" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175631987">(Sep 13 2019 at 14:56)</a>:</h4>
<p>(I was hoping to do something similar around traits/types -- try to make more concrete plans and come back with them, say in a month or so)</p>



<a name="175632011"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632011" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632011">(Sep 13 2019 at 14:57)</a>:</h4>
<p>SGTM, though, for parser specifically, I feel like "moving to proc-macros token model" is prerequisite, and that is a no-small chunk of work</p>



<a name="175632025"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632025" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632025">(Sep 13 2019 at 14:57)</a>:</h4>
<p>say a bit more?</p>



<a name="175632029"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632029" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632029">(Sep 13 2019 at 14:57)</a>:</h4>
<p>do you mean doing that in rustc's parser?</p>



<a name="175632034"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632034" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632034">(Sep 13 2019 at 14:57)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/issues/63689" target="_blank" title="https://github.com/rust-lang/rust/issues/63689">https://github.com/rust-lang/rust/issues/63689</a></p>



<a name="175632039"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632039" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632039">(Sep 13 2019 at 14:57)</a>:</h4>
<blockquote>
<p>I am thinking about untyped event-based parser :)</p>
</blockquote>
<p>untyped: sure, fine, <code>grammer</code> is like that<br>
event-based: huh, I thought that only made sense for LISP and XML, and maybe our token trees :P</p>



<a name="175632082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632082">(Sep 13 2019 at 14:58)</a>:</h4>
<p>do you feel like you can't talk through what the parser interface would look like after that?</p>



<a name="175632092"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632092" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632092">(Sep 13 2019 at 14:58)</a>:</h4>
<p>or just that it's not worth the effort?</p>



<a name="175632104"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632104" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632104">(Sep 13 2019 at 14:58)</a>:</h4>
<p>it's mostly internal though isn't it?</p>



<a name="175632115"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632115" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632115">(Sep 13 2019 at 14:58)</a>:</h4>
<p>it seems like it'd be good to get agreement (if possible) on the overall direction, probably in parallel with refactoring and working on <a href="https://github.com/rust-lang/rust/issues/63689" target="_blank" title="https://github.com/rust-lang/rust/issues/63689">#63689</a>?</p>



<a name="175632117"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632117" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632117">(Sep 13 2019 at 14:58)</a>:</h4>
<p>the interface already takes <code>TokenStream</code></p>



<a name="175632136"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632136" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632136">(Sep 13 2019 at 14:58)</a>:</h4>
<p>it's just that we have two token representations and convert on the fly between them</p>



<a name="175632164"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632164" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632164">(Sep 13 2019 at 14:59)</a>:</h4>
<p>ok; what I meant was, it seems like there's some questions around how to get the <em>output</em> from the parser</p>



<a name="175632193"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632193" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632193">(Sep 13 2019 at 14:59)</a>:</h4>
<p>anyway either way is ok for me :)</p>



<a name="175632195"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632195" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632195">(Sep 13 2019 at 14:59)</a>:</h4>
<p><span class="user-mention" data-user-id="133169">@matklad</span>  tagless final would mean that we use traits to encode "constructor" rather than using <code>enum</code>s to have specific ones</p>



<a name="175632216"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632216" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632216">(Sep 13 2019 at 14:59)</a>:</h4>
<p>then you'll need "is X variant" in some cases as well</p>



<a name="175632292"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632292" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632292">(Sep 13 2019 at 15:00)</a>:</h4>
<p>I am a little confused, but my point is: <a href="https://github.com/rust-lang/rust/issues/63689" target="_blank" title="https://github.com/rust-lang/rust/issues/63689">#63689</a> seems like a prerequsite for anything else, so I don't think there's a ton of value in discussing specifics until iti s fixed</p>



<a name="175632352"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632352" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632352">(Sep 13 2019 at 15:00)</a>:</h4>
<p><span class="user-mention" data-user-id="133169">@matklad</span>  I think there's value for rustc tho in terms of splitting parser/ast/lowering</p>



<a name="175632358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632358">(Sep 13 2019 at 15:00)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> ah, the mad scientist approach to data</p>



<a name="175632408"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632408" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632408">(Sep 13 2019 at 15:01)</a>:</h4>
<p>if I may summarize the meeting, in broad strokes:</p>
<ul>
<li>agreement on library-ification, as outlined earlier</li>
<li>agreement we're going to create some libaries with 2 consumers, rustc and rust-analyzer<br>
    - this implies we do care about the rust-analyzer / IDE use case</li>
<li>lots of back and forth on the best way to manage this that I'll have to go summarize</li>
<li>next steps:<br>
    - some folks splinter out to pursue parser and come back with some experience / design notes<br>
    - some folks splinter out to pursue traits (in/around <a class="stream" data-stream-id="144729" href="/#narrow/stream/144729-wg-traits">#wg-traits</a>) and come back with experience / design notes</li>
</ul>
<p>sound right?</p>



<a name="175632426"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632426" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632426">(Sep 13 2019 at 15:01)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> I actually wanted something like that for the <code>gll</code> crate's autogenerated types, so you can easily make an AST/have actions/etc. but now that I'm moving to a more dynamic model I care less</p>



<a name="175632433"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632433" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632433">(Sep 13 2019 at 15:01)</a>:</h4>
<p>and you all fork this parser-specific discussion into a different topic :P</p>



<a name="175632452"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632452" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632452">(Sep 13 2019 at 15:01)</a>:</h4>
<p>/me wishes Zulip had a way to tag individual messages</p>



<a name="175632457"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632457" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632457">(Sep 13 2019 at 15:01)</a>:</h4>
<p><span class="user-mention" data-user-id="119009">@eddyb</span> If by "mad scientist" you mean Oleg Kiselyov</p>



<a name="175632462"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632462" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632462">(Sep 13 2019 at 15:02)</a>:</h4>
<p>(but I could still help someone deliver that ridiculous vision. it uhh involves type HRTB stuff)</p>



<a name="175632519"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632519" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632519">(Sep 13 2019 at 15:02)</a>:</h4>
<p>And if some folks want to spearhead macros/nameres, that would be awesome :D</p>



<a name="175632535"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632535" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632535">(Sep 13 2019 at 15:02)</a>:</h4>
<p>I want to but I doubt I have the time</p>



<a name="175632548"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632548" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632548">(Sep 13 2019 at 15:02)</a>:</h4>
<p>(and I want to do it in a way none of you would like except maybe if it did work)</p>



<a name="175632551"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632551" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632551">(Sep 13 2019 at 15:02)</a>:</h4>
<p>Yeah, I totally want to say "we'll do that!" but I'm feeling like the right answer is "and that's next on our queue"</p>



<a name="175632610"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632610" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632610">(Sep 13 2019 at 15:03)</a>:</h4>
<p><span class="user-mention" data-user-id="133169">@matklad</span> something that might not be obvious: we tests things through compiler errors most of the time. would be nice to actually dumb the resolutions of paths somehow and make sure those make sense, especially for the complex macro stuff</p>



<a name="175632628"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632628" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632628">(Sep 13 2019 at 15:04)</a>:</h4>
<p>OK thanks <span aria-label="heart" class="emoji emoji-2764" role="img" title="heart">:heart:</span> we're out of time, this was awesome as ever, y'all are wonderful. <span aria-label="heart eyes" class="emoji emoji-1f60d" role="img" title="heart eyes">:heart_eyes:</span></p>



<a name="175632665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632665">(Sep 13 2019 at 15:04)</a>:</h4>
<p>maybe fix the pretty-printer so it uses modern indentation rules :P</p>



<a name="175632729"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632729" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632729">(Sep 13 2019 at 15:05)</a>:</h4>
<blockquote>
<p>something that might not be obvious: we tests things through compiler errors most of the time. would be nice to actually dumb the resolutions of paths somehow and make sure those make sense, especially for the complex macro stuff</p>
</blockquote>
<p>I've wondered about this -- I sometimes add funky things to the compiler to make errors for internal state like this that wouldn't otherwise be visible. I really like this approach. But it's only "sort of" an integration test -- still, I think it's a good approach, as long as that state that's being dumped is something that would likely be "forwards portable" to a new system</p>



<a name="175632869"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632869" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632869">(Sep 13 2019 at 15:06)</a>:</h4>
<p>(I made a new topic for frontend ast/parser/macros/nameres/lowering stuff)</p>



<a name="175632894"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175632894" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175632894">(Sep 13 2019 at 15:06)</a>:</h4>
<p>In rust-analyzer, nameres/macro expansion tests dump, for each module, the set of visible names (with namespaeces)</p>



<a name="175719780"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-09-13/near/175719780" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-09-13.html#175719780">(Sep 14 2019 at 21:50)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> expanded a bit on "rust doesn't have good idioms for pimpl": <a href="https://internals.rust-lang.org/t/request-for-an-rfc-pimpl-for-rust/10947" target="_blank" title="https://internals.rust-lang.org/t/request-for-an-rfc-pimpl-for-rust/10947">https://internals.rust-lang.org/t/request-for-an-rfc-pimpl-for-rust/10947</a></p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>